using System;
using System.Collections.Generic;
using System.Text;

namespace Galaktika.BI.Runtime.Services
{
    using Galaktika.BI.Extensibility.Dom;
    using Galaktika.BI.Extensibility.Dom.Dac;

    public interface IExecutionContext
    {
        void SuspendRefresh();
        void ResumeRefresh();
        BrickVariable GetVariable(IBindingContext context, string name);
        BrickVariable GetVariable(IBindingContext context, string name, bool createIfNotExists);
        IDictionary<string, string> GetStateVariables(IBindingContext context);
        BrickObject GetNamedObject(IBindingContext context, string name);
        bool ModifyVariable(IBindingContext context, string name, string newValue);
        bool ModifyVariables(IBindingContext context, IDictionary<string, string> newValues);
        void DoDrillDown(IBindingContext context);

        string Parse(IBindingContext context, string input);
    }
}
